package com.enzoism.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

// 针对【接口】编写的Agent代理工具类
// 不给任何object做代理，我只给自己做代理
public class Agent2 implements InvocationHandler{


    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("我是代理，谈合作，拉投资，布置场地");
        // 不给任何object做代理，我只给自己做代理[所以下面这句话是注释的]
        // Object invoke = method.invoke(target, args);
        System.out.println("---执行"+method.getName());
        System.out.println("我是代理，项目结算");
        System.out.println();
        return null;
    }

    public static <T> T getProxy(Class<T> clazz){
        Agent2 agent = new Agent2();
        T instance = (T)Proxy.newProxyInstance(agent.getClass().getClassLoader(),
                new Class[]{clazz}, agent);
        return instance;
    }
}
